home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ARexxTools / TRX_Tools.lha / TritonRexx-Tools / PGP2GUI / PGP2GUI.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1995-11-09  |  24.3 KB  |  824 lines

  1. /*
  2.    $VER: PGP2TRXGUI.rexx V1.1 (9.11.95) © by Nils Görs
  3.  
  4. Dies  ist  wieder  einer  der vielen Gui's für PGP.  Aber dies ist der
  5. erste, der in ARexx geschrieben wurde ;-)
  6.  
  7. */
  8.  
  9. /* Wo befindet sich PGP ?? */
  10. PGP.exe = "PGP"
  11.  
  12. /* Wie ist der Name der PGP-Pfad-Variable ?? */
  13. PGPVariable = "PGPPATH"
  14.  
  15. /* In welches File sollen temporäre Daten geschrieben werden? */
  16. PGPOut  = "t:qwer.pgp"
  17.  
  18. /* Informationen über das Ausgabefenster      */
  19. LeftBorder   = 10    /*Abstand linker Rand    */
  20. TopBorder    = 300   /*Abstand vom oberen Rand*/
  21. OutPutWidth  = 640   /*Breite des Fensters    */
  22. OutPutHeight = 150   /*Höhe des Fensters      */
  23.  
  24. /************************************************
  25.  * Please don't change anything under this line *
  26.  ************************************************/
  27. OPTIONS RESULTS
  28. NL = '0a'x
  29.  
  30. PARSE ARG PubScreen
  31.  
  32. IF PubScreen == "?" THEN DO
  33.  OPTIONS PROMPT "PUBSCREEN/K: "
  34.  PARSE PULL PubScreen
  35. END
  36.  
  37. /* öffne alle nötigen libraries - wenn nicht möglich Programmende */
  38.  
  39. IF ~SHOW('LIBRARIES','rexxreqtools.library') THEN
  40.   IF ~ADDLIB('rexxreqtools.library',0,-30,0) THEN
  41.     EXIT
  42.  
  43. IF ~SHOW('LIBRARIES','tritonrexx.library') THEN DO
  44.    IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN DO
  45.       SAY 'Kann die <tritonrexx.library> nicht öffnen!'
  46.       EXIT(10)
  47.    END
  48. END
  49.  
  50. IF ~SHOW('LIBRARIES','rexxtricks.library') THEN DO
  51.    IF ~ADDLIB('rexxtricks.library',0,-30,0) THEN DO
  52.       SAY 'Kann die <rexxtricks.library> nicht öffnen!'
  53.       EXIT(10)
  54.    END
  55. END
  56.  
  57. IF ~SHOW('LIBRARIES','rexxsupport.library') THEN DO
  58.    IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN DO
  59.       SAY 'Kann die <rexxsupport.library> nicht öffnen!'
  60.       EXIT(10)
  61.    END
  62. END
  63.  
  64.  
  65. IF PubScreen == "" THEN
  66.    PubScreen = RXTR_GETDEFAULTPUBSCREEN()
  67.  
  68. ScreenOutPut = 'CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/Closegadget zum Beenden/SCREEN' PubScreen'/AUTO/CLOSE'
  69.  
  70. /**********************************
  71. *** Standard-Output umlenken ;) ***
  72. ***********************************/
  73. CALL CLOSE('STDOUT')
  74. IF ~OPEN('STDOUT',ScreenOutPut,'W') THEN
  75.    EXIT(10)
  76.  
  77. CALL CLOSE('STDIN')
  78. CALL OPEN('STDIN','*','W')
  79. CALL PRAGMA('*','STDOUT')
  80. CALL PRAGMA('*','STDIN')
  81.  
  82. /*************************
  83. *** PGP-Pfad ermitteln ***
  84. **************************/
  85. PGPPath=RXTR_GETENV(PgpVariable)
  86. IF PGPPath == "" THEN DO
  87.  Say "Sie müssen eine Varible mit dem PGP-Pfad anlegen!"
  88.  EXIT(5)
  89. END
  90. Laenge=WORDLENGTH(PgpPath,1)
  91.  SELECT
  92.   WHEN LASTPOS("/",PgpPath) = Laenge THEN NOP
  93.   WHEN LASTPOS(":",PgpPath) = Laenge THEN NOP
  94.  OTHERWISE
  95.   PgpPath = PgPPath||"/"
  96.  END
  97. CALL _InitIDList
  98.  
  99. /*
  100. ** Beschreibung der Applikation
  101. */
  102. appname     = 'PGPTrxGui'
  103. applongname = 'PGPTrxGui - ©1995 by Nils Görs'
  104. appinfo     = 'Graphical-User-Interface for PrettyGoodPrivacy(tm)'
  105. appversion  = '1.1'
  106. apprelease  = '2'
  107. appdate     = '9.11.95'
  108. HelpBool = 0
  109.  
  110. _maintags:
  111. windowtags = WindowID(1),
  112.              PubScreenName(PubScreen),
  113.              WindowTitle(appname appversion),
  114.              QuickHelpOn(HelpBool),
  115.               BeginMenu("Projekt"),
  116.               MenuItem("?_Über",100) ItemBarlabel,
  117.               MenuItemC("H_Hilfe",103),
  118.               MenuItem("W_PubScreen wechseln",102),
  119.               MenuItem("I_Ikonifizieren",104) ItemBarlabel,
  120.               MenuItem("Q_Beenden",101),
  121.              'VertGroupA Space',
  122.               'HorizGroupA Space',
  123.                 'TROB_FrameBox TRFB_FRAMING',
  124.                  'VertGroupA',
  125.                     Button("Key _generieren",1),
  126.                     'TRDO_QuickHelpString "Generieren Sie sich ihren eigenen Sicherheitsschlüssel."',
  127.                     Button("_Beglaubigungen pr.",2),
  128.                     'TRDO_QuickHelpString "Überprüfen Sie bitte einmal ob Schlüsseldateien vom Besitzer beglaubigt sind."',
  129.                     Button("Key _editieren",3),
  130.                     'TRDO_QuickHelpString "Neue UserID anhängen, Pass phrase ändern bzw. andere User einstufen."',
  131.                     Button("_Inhalt anzeigen",4),
  132.                     'TRDO_QuickHelpString "Zeigt an welche öffentlichen Schlüssel sich in Ihrem pubring befinden."',
  133.                     Button("_Fingerprint anz.",5),
  134.                     'TRDO_QuickHelpString "Zeigt die Fingerprints der Anwender an."',
  135.                     Button("_ASCII-Key sp.",6),
  136.                     'TRDO_QuickHelpString "Speichert einen öffentlichen Schlüssel im ASCII-Format ab."',
  137.                  'EndGroup',
  138. ,
  139.                 'SpaceS VertSeparator SpaceS',
  140. ,
  141.                'VertGroupA',
  142.                  'TROB_FrameBox TRFB_FRAMING',
  143.                    'VertGroupA',
  144.                      Button("Key _speichern",7),
  145.                      'TRDO_QuickHelpString "Speichert einen öffentlichen Schlüssel im Binärformat ab."',
  146.                      Button("Key _hinzufügen",8),
  147.                      'TRDO_QuickHelpString "Nimmt einen öffentlichen Schlüssel, aus einer Datei, in ihren pubring auf."',
  148.                      Button("Key _löschen",9),
  149.                      'TRDO_QuickHelpString "Entfernt einen öffentlichen Schlüssel aus ihrem pubring."',
  150.                      Button("Key _unterschreiben",10),
  151.                      'TRDO_QuickHelpString "Setzen Sie eine Unterschrift unter einen öffentlichen Schlüssel."',
  152.                      Button("Unterschrift e_ntf.",11),
  153.                      'TRDO_QuickHelpString "Entfernen Sie eine Unterschrift von einem öffentlichen Schlüssel."',
  154.                      Button("Key _zurückziehen",12),
  155.                      'TRDO_QuickHelpString "Erklären Sie einen Schlüssel für ungültig !"',
  156.                    'EndGroup Space',
  157.                'EndGroup Space',
  158.               'EndGroup',
  159. ,
  160.                'HorizGroupA Space',
  161.                  'TROB_FrameBox TRFB_FRAMING',
  162.                 'VertGroupA',
  163.                    Button("Datei _verschlüsseln",13),
  164.                    'TRDO_QuickHelpString "Verschlüsselt eine Datei Ihrer Wahl."',
  165.                    Button("_Dat. entschlüsseln/Unterschrift prüfen",14),
  166.                    'TRDO_QuickHelpString "Entschlüsselt eine Datei für Sie und überprüft diese auf korrektheit."',
  167.                    Button("Datei un_terschreiben",15),
  168.                    'TRDO_QuickHelpString "Setzt eine Unterschrift unter eine Datei."',
  169.                   'SpaceS',
  170.                   'LineArray',
  171.                      'BeginLine',
  172.                         'HorizGroupS Space EndGroup',
  173.                         CheckBox(20) 'TRDO_QuickHelpString "Erstellt eine seperate Unterschrift für eine Datei."',
  174.                         'Space',
  175.                         Text3("Abgetrennte Unte_rschrift") 'TRAT_ID 20',
  176.                         'HorizGroupS Space EndGroup',
  177.                      'EndLine',
  178.                      'SpaceS',
  179.                      'BeginLine',
  180.                         'HorizGroupS Space EndGroup',
  181.                         CheckBox(21),
  182.                         'TRDO_QuickHelpString "Erzeugt eine Datei im ASCII-Format (z.b. zum E-Mail Versand)."',
  183.                         'Space',
  184.                         Text3("RADIX-_64 Format") 'TRAT_ID 21',
  185.                         'HorizGroupS Space EndGroup',
  186.                      'EndLine',
  187.                      'SpaceS',
  188.                      'BeginLine',
  189.                         'HorizGroupS Space EndGroup',
  190.                         CheckBox(22),
  191.                         'TRDO_QuickHelpString "Nachrichten im Klartext mit ASCII-Unterschrift."',
  192.                         'Space',
  193.                         Text3("Nachricht in Klarte_xt mit Unterschrift") 'TRAT_ID 22',
  194.                         'HorizGroupS Space EndGroup',
  195.                      'EndLine',
  196.                   'EndArray',
  197.                   'Space',
  198.                 'EndGroup Space',
  199.                'EndGroup Space',
  200.              'EndGroup Space EndProject',
  201.  
  202. /*
  203. ** Unterbrechungssignale
  204. */
  205.  
  206. SIGNAL ON break_c
  207. /*SIGNAL ON failure*/
  208. SIGNAL ON halt
  209. SIGNAL ON ioerr
  210. SIGNAL ON syntax
  211.  
  212. app = TR_CREATEAPP('TRCA_Name'     '"'appname'"',
  213.                    'TRCA_LongName' '"'applongname'"',
  214.                    'TRCA_Info'     '"'appinfo'"',
  215.                    'TRCA_Version'  '"'appversion'"',
  216.                    'TRCA_Release'  '"'apprelease'"',
  217.                    'TRCA_Date'     '"'appdate'"',
  218.                    'TAG_END')
  219.  
  220.  
  221. IF app ~= '00000000'x THEN DO
  222.  
  223.    window = TR_OPENPROJECT(app,windowtags)
  224.    WindowProject=C2D(window) /* zum Locken des Fensters bei Über */
  225.  
  226.    IF window ~= '00000000'x THEN DO
  227.       ende = 0
  228.  
  229. CheckBox1 = 0
  230. CheckBox2 = 0
  231. CheckBox3 = 0
  232.  
  233.       DO WHILE ende ~= 1
  234.          CALL TR_WAIT(app,'')
  235.  
  236.          DO WHILE TR_HANDLEMSG(app,'event')
  237.  
  238. /******************
  239. *** CLOSEGADGET ***
  240. *******************/
  241.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  242.               IF event.trm_project = dummywindow THEN
  243.                CALL _uniconify
  244.               IF event.trm_project = window THEN DO
  245.                nummer = TR_GETATTRIBUTE(window,10,'TRAT_Value')+1
  246.                ende = 1
  247.               END
  248.             END
  249.  
  250. /*************
  251. *** GADGET ***
  252. **************/
  253.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  254.              SELECT
  255.               WHEN event.trm_id = 1  THEN CALL _KeyGenerieren
  256.               WHEN event.trm_id = 2  THEN CALL _BeglaubigungUeberpruefen
  257.               WHEN event.trm_id = 3  THEN CALL _KeyEditieren
  258.               WHEN event.trm_id = 4  THEN CALL _InhaltAnzeigen
  259.               WHEN event.trm_id = 5  THEN CALL _FingerPrintAnzeigen
  260.               WHEN event.trm_id = 6  THEN CALL _ASCIIKeySpeichern
  261.               WHEN event.trm_id = 7  THEN CALL _KeySpeichern
  262.               WHEN event.trm_id = 8  THEN CALL _KeyHinzufuegen
  263.               WHEN event.trm_id = 9  THEN CALL _Keyloeschen
  264.               WHEN event.trm_id = 10 THEN CALL _KeyUnterschreiben
  265.               WHEN event.trm_id = 11 THEN CALL _UnterschriftEntfernen
  266.               WHEN event.trm_id = 12 THEN CALL _KeyZurueckziehen
  267.               WHEN event.trm_id = 13 THEN CALL _DateiVerschluesseln
  268.               WHEN event.trm_id = 14 THEN CALL _DateiEntschluesseln
  269.               WHEN event.trm_id = 15 THEN CALL _DateiUnterschreiben
  270.               WHEN event.trm_id = 100 THEN CALL about
  271.               WHEN event.trm_id = 102 THEN CALL _NewPubScreen
  272.               WHEN event.trm_id = 104 THEN CALL _Iconify
  273.               WHEN event.trm_id = 101 THEN DO
  274.                Erg=rtezrequest("Wirklich beenden?", "_Ja|_Nein",,"rt_pubscrname="PubScreen)
  275.                IF Erg == 1 THEN ende = 1
  276.               END
  277.              OTHERWISE
  278.               NOP
  279.              END
  280.             END
  281.  
  282. /***************
  283. *** CHECKBOX ***
  284. ****************/
  285.            IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  286.             SELECT
  287.               WHEN event.trm_id = 103 THEN DO
  288.                nummer = TR_GETATTRIBUTE(window,103,'TRAT_VALUE')
  289.                CALL TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',nummer)
  290.                END
  291.               WHEN event.trm_id = 20 THEN
  292.                CheckBox1=event.trm_data   /*Abgetrennte Unterschrift?*/
  293.               WHEN event.trm_id = 21 THEN
  294.                CheckBox2=event.trm_data   /*Radix64-Format*/
  295.               WHEN event.trm_id = 22 THEN
  296.                CheckBox3=event.trm_data   /*Text in Klartext*/
  297.               OTHERWISE NOP
  298.             END
  299.             IF CheckBox1+CheckBox2+Checkbox3 ~= 0 THEN
  300.              CALL TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
  301.             IF CheckBox1+CheckBox2+Checkbox3 == 0 THEN
  302.              CALL TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0)
  303.  
  304.            END
  305.          END
  306.       END
  307.       CALL TR_CLOSEPROJECT(window)
  308.    END
  309.    CALL TR_DELETEAPP(app)
  310. END
  311. EXIT(0)
  312.  
  313. /*******************************************
  314. *** Unterroutinen für die PGP-Ausführung ***
  315. ********************************************/
  316. _KeyGenerieren:
  317.  ADDRESS COMMAND PGP.exe '-kg'
  318. RETURN
  319. /*
  320. ***
  321. */
  322. _BeglaubigungUeberpruefen:
  323.  HeadLine = "Welche ID's beglaubigen?"
  324.  NotMore = 0            /* Gadget unghosten */
  325.    CALL _ListViewUserListe
  326.     SELECT
  327.      WHEN ende = 1 THEN DO
  328.       ende = 0
  329.       RETURN
  330.       END
  331.      WHEN ende = 2 THEN
  332.       ADDRESS COMMAND PGP.exe '-kc "'pgpuserliste.lnummer'" >'PgPOut||2
  333.      WHEN ende = 3 THEN
  334.       ADDRESS COMMAND PGP.exe '-kc >'PgPOut||2
  335.       OTHERWISE
  336.       NOP
  337.     END
  338.     ende = 0
  339.  IF RXTR_READFILE(PgpOut||2,TemporaryList) == 0 THEN EXIT(5)
  340.  ADDRESS COMMAND 'Delete' pgpout||2 'QUIET'
  341.  CALL _NormalListView
  342. RETURN
  343. /*
  344. ***
  345. */
  346. _KeyEditieren:
  347.  HeadLine = "Welche User-ID editieren?"
  348.  NotMore = 1            /* Gadget ghosten */
  349.    CALL _ListViewUserListe
  350.     SELECT
  351.      WHEN ende = 1 THEN nop
  352.      WHEN ende = 2 THEN
  353.        ADDRESS COMMAND PGP.exe '-ke "'pgpuserliste.lnummer'"'
  354.       OTHERWISE
  355.       NOP
  356.     END
  357.     ende = 0
  358. RETURN
  359. /*
  360. ***
  361. */
  362. _InhaltAnzeigen:
  363.  ADDRESS COMMAND PGP.exe '-kvv >'PgpOut||2
  364.  IF RXTR_READFILE(PgpOut||2,TemporaryList) == 0 THEN EXIT(5)
  365.  ADDRESS COMMAND 'Delete' pgpout||2 'QUIET'
  366.  CALL _NormalListView
  367. RETURN
  368. /*
  369. ***
  370. */
  371. _FingerPrintAnzeigen:
  372.  HeadLine = "Welche Fingerprints anzeigen?"
  373.  NotMore = 0            /* Gadget unghosten */
  374.    CALL _ListViewUserListe
  375.     SELECT
  376.      WHEN ende = 1 THEN DO
  377.       ende = 0
  378.       RETURN
  379.      END
  380.      WHEN ende = 2 THEN
  381.          ADDRESS COMMAND PGP.exe '-kvc "'pgpuserliste.lnummer'" >'PgPOut||2
  382.      WHEN ende = 3 THEN 
  383.          ADDRESS COMMAND PGP.exe '-kvc >'PgpOut||2
  384.       OTHERWISE
  385.       NOP
  386.     END
  387.       IF READFILE(PgpOut||2,TemporaryList) == 0 THEN EXIT(5)
  388.       ADDRESS COMMAND 'Delete' pgpout||2 'QUIET'
  389.       CALL _NormalListView
  390.     ende = 0
  391. RETURN
  392. /*
  393. ***
  394. */
  395. _ASCIIKeySpeichern:
  396.  HeadLine = "Welchen Key im ASCII Modus speichern?"
  397.  NotMore = 1            /* Gadget ghosten */
  398.    CALL _ListViewUserListe
  399.     SELECT
  400.      WHEN ende = 1 THEN nop
  401.      WHEN ende = 2 THEN
  402.       ADDRESS COMMAND PGP.exe '-kxa "'pgpuserliste.lnummer'" "'PGPPath||pgpuserliste.lnummer'"'
  403.       OTHERWISE
  404.       NOP
  405.     END
  406.     ende = 0
  407. RETURN
  408. /*
  409. ***
  410. */
  411. _KeySpeichern:
  412.  HeadLine = "Welchen Key speichern?"
  413.  NotMore = 1            /* Gadget ghosten */
  414.    CALL _ListViewUserListe
  415.     SELECT
  416.      WHEN ende = 1 THEN nop
  417.      WHEN ende = 2 THEN
  418.       ADDRESS COMMAND PGP.exe '-kx "'pgpuserliste.lnummer'" "'PGPPath||pgpuserliste.lnummer'"'
  419.       OTHERWISE
  420.       NOP
  421.     END
  422.     ende = 0
  423. RETURN
  424. /*
  425. ***
  426. */
  427. _KeyHinzufuegen:
  428. CALL rtfilerequest(,,"Bitte Datei(en) mit neuem(n) Key(s) auswählen",,"rt_pubscrname="PubScreen "rtfi_flags=freqf_multiselect",files)
  429. IF files == 1 THEN DO
  430.   do i = 1 to files.count
  431.    ADDRESS COMMAND Pgp.exe '-ka' files.i
  432.   END
  433. END
  434. DROP files
  435. RETURN
  436. /*
  437. ***
  438. */
  439. _Keyloeschen:
  440.  HeadLine = "Welche User-ID löschen?"
  441.  NotMore = 1            /* Gadget ghosten */
  442.    CALL _ListViewUserListe
  443.     SELECT
  444.      WHEN ende = 1 THEN nop
  445.      WHEN ende = 2 THEN DO
  446.       ADDRESS COMMAND PGP.exe '-kr "'pgpuserliste.lnummer'"'
  447.       IF (RC) = 0 THEN CALL _InitIDList
  448.       END
  449.       OTHERWISE
  450.       NOP
  451.     END
  452.     ende = 0
  453. RETURN
  454. /*
  455. ***
  456. */
  457. _KeyUnterschreiben:
  458.  HeadLine = "Welchen Key unterschreiben?"
  459.  NotMore = 1            /* Gadget ghosten */
  460.    CALL _ListViewUserListe
  461.     SELECT
  462.      WHEN ende = 1 THEN nop
  463.      WHEN ende = 2 THEN
  464.        ADDRESS COMMAND PGP.exe '-ks "'pgpuserliste.lnummer'"'
  465.       OTHERWISE
  466.       NOP
  467.     END
  468.     ende = 0
  469. RETURN
  470. /*
  471. ***
  472. */
  473. _UnterschriftEntfernen:
  474.  HeadLine = "Von welcher ID die Unterschrift entfernen?"
  475.  NotMore = 1            /* Gadget ghosten */
  476.    CALL _ListViewUserListe
  477.     SELECT
  478.      WHEN ende = 1 THEN nop
  479.      WHEN ende = 2 THEN
  480.        ADDRESS COMMAND PGP.exe '-krs "'pgpuserliste.lnummer'"'
  481.       OTHERWISE
  482.       NOP
  483.     END
  484.     ende = 0
  485. RETURN
  486. /*
  487. ***
  488. */
  489. _Keyzurueckziehen:
  490.  HeadLine = "Von welcher ID die Unterschrift entfernen?"
  491.  NotMore = 1            /* Gadget ghosten */
  492.    CALL _ListViewUserListe
  493.     SELECT
  494.      WHEN ende = 1 THEN nop
  495.      WHEN ende = 2 THEN
  496.        ADDRESS COMMAND PGP.exe '-kd "'pgpuserliste.lnummer'"'
  497.       OTHERWISE
  498.       NOP
  499.     END
  500.     ende = 0
  501. RETURN
  502. /*
  503. ***
  504. */
  505. _Dateiverschluesseln:
  506. File=rtfilerequest(,,"Bitte Datei(en) mit neuem(n) Key(s) auswählen",,"rt_pubscrname="PubScreen)
  507. IF file ~= "" THEN DO
  508.  HeadLine = "Welche Datei kodieren?"
  509.  NotMore = 1            /* Gadget ghosten */
  510.    CALL _ListViewUserListe
  511.     template = '-e'
  512.     IF CheckBox1 == 1 THEN template = template||"b" /*Abgetrennte Unterschrift*/
  513.     IF CheckBox2 == 1 THEN template = template||"a"           /*Radix64-Format*/
  514.     IF CheckBox3 == 1 THEN template = template||" +clearsig=on"  /*in Klartext*/
  515.     SELECT
  516.      WHEN ende = 1 THEN nop
  517.      WHEN ende = 2 THEN
  518.        ADDRESS COMMAND PGP.exe template file '"'pgpuserliste.lnummer'"'
  519.       OTHERWISE
  520.       NOP
  521.     END
  522.     ende = 0
  523. END
  524. DROP file
  525. DROP template
  526. RETURN
  527. /*
  528. ***
  529. */
  530. _Dateientschluesseln:
  531. File=rtfilerequest(,,"Bitte kodierte Datei auswählen",,"rt_pubscrname="PubScreen)
  532. IF file ~= "" THEN
  533.   ADDRESS COMMAND PGP.exe file
  534. DROP file
  535. RETURN
  536. /*
  537. ***
  538. */
  539. _DateiUnterschreiben:
  540. File=rtfilerequest(,,"Bitte kodierte Datei auswählen",,"rt_pubscrname="PubScreen)
  541. IF file ~= "" THEN DO
  542.     template = '-s'
  543.     IF CheckBox1 == 1 THEN template = template||"b" /*Abgetrennte Unterschrift*/
  544.     IF CheckBox2 == 1 THEN template = template||"a"           /*Radix64-Format*/
  545.     IF CheckBox3 == 1 THEN template = template||" +clearsig=on"  /*in Klartext*/
  546.   ADDRESS COMMAND PGP.exe template file
  547. END
  548. DROP file
  549. DROP template
  550. RETURN
  551.  
  552. /******************************
  553. *** Liste mit ID's besorgen ***
  554. *******************************/
  555. _InitIDList:
  556. ADDRESS COMMAND 'pgp >'PgpOut '-kv'
  557. IF RXTR_READFILE(PgpOut,PgpUserListebak) == 0 THEN EXIT(5)
  558. reeD=WORDINDEX(PgpUserListebak.4,4)
  559. j = 1
  560. do i = 4 to PgpUserListebak.0-1
  561.  UserID=SUBSTR(PgpUserListebak.i,reeD)
  562.  PgpUserListe.j = UserID
  563.  PgpUserListe.0 = j
  564.  j = j+1
  565. END
  566. ADDRESS COMMAND 'delete' pgpout 'QUIET'
  567. RETURN
  568.  
  569. /******************************
  570. *** ListView zum auswählen! ***
  571. *******************************/
  572. _ListViewUserListe:
  573. RemoveListTags = WindowID(2),
  574.    WindowPosition('TRWP_MOUSEPOINTER'),
  575.    WindowFlags('TRWF_NOCLOSEGADGET'),
  576.    WindowTitle(HeadLine),
  577.    PubScreenName(Pubscreen),
  578.    'VertGroupA',
  579.       'Space',
  580.       'HorizGroupA',
  581.          'Space',
  582.          ListSS('pgpuserliste',301,0,0),
  583.          'Space',
  584.       'EndGroup',
  585.       'Space',
  586.       'HorizSeparator',
  587.       'Space',
  588.       'HorizGroupA',
  589.       'Space',
  590.       ButtonRE('_Eintrag',304),
  591.       Button('_Keinen speziellen',302),
  592.       Button('_Abbrechen',303),
  593.       'Space',
  594.    'EndGroup Space EndGroup EndGroup EndProject'
  595.  
  596.     ListViewUserListe = TR_OPENPROJECT(app,Removelisttags)
  597.  
  598.   IF ListViewUserListe ~= '00000000'x THEN DO
  599.     CALL TR_LOCKPROJECT(window)
  600.  
  601. IF NotMore == 1 THEN
  602.   CALL TR_SETATTRIBUTE(ListViewUserListe,302,'TRAT_Disabled',1)
  603.  
  604. ende = 0
  605.       DO WHILE ende = 0
  606.          DO WHILE TR_HANDLEMSG(app,'event2')
  607.  
  608.             /* Alle Gadget */
  609.             IF event2.trm_id = 302 THEN DO
  610.             ende = 3
  611.             END
  612.  
  613.             /* Cancel Gadget */
  614.             IF event2.trm_id = 303 THEN ende = 1
  615.  
  616.             /* Einen Eintrag */
  617.             IF event2.trm_id = 304 THEN DO
  618.              LNummer=TR_GETATTRIBUTE(ListViewUserListe,301,'TRAT_Value')+1
  619.              ende = 2
  620.             END
  621.  
  622.             IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
  623.              IF event2.trm_id = 301 THEN DO
  624.               IF BITAND(D2X(event2.trm_qualifier),'0200'x) = '0200'x THEN DO
  625.               LNummer=TR_GETATTRIBUTE(ListViewUserListe,301,'TRAT_Value')+1
  626.               ende = 2
  627.               END
  628.              END
  629.             END
  630.  
  631.          END
  632.       END
  633.     CALL TR_UNLOCKPROJECT(window)
  634.     CALL TR_CLOSEPROJECT(ListViewUserListe)
  635. END
  636. RETURN
  637.  
  638. _NormalListView:
  639. RemoveListTags = WindowID(3),
  640.    WindowPosition('TRWP_MOUSEPOINTER'),
  641.    WindowTitle('Inhalt'),
  642.    PubScreenName(Pubscreen),
  643.    'VertGroupAC',
  644.       'Space',
  645.       'HorizGroupAC',
  646.          'Space',
  647.          ListRO('TemporaryList',301,0),
  648.       'EndGroup',
  649.          'HorizSeparator SpaceS',
  650.          CenteredButtonR('Abbrechen',302),
  651.    'Space EndGroup Space EndProject'
  652.  
  653.     NormalListView = TR_OPENPROJECT(app,Removelisttags)
  654.  
  655.   IF NormalListView ~= '00000000'x THEN DO
  656.     CALL TR_LOCKPROJECT(window)
  657.  
  658.       ende = 0
  659.       DO WHILE ende ~= 1
  660.          DO WHILE TR_HANDLEMSG(app,'event2')
  661.             /* Cancel Gadget */
  662.             IF event2.trm_id = 302 THEN ende = 1
  663.             IF event2.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  664.                ende = 1
  665.             END
  666.  
  667.          END
  668.       END
  669.     CALL TR_UNLOCKPROJECT(window)
  670.     CALL TR_CLOSEPROJECT(NormalListView)
  671. END
  672. ende = 0
  673. RETURN
  674.  
  675. /*******************************************************************************
  676. ** Info über das Programm anzeigen
  677. *******************************************************************************/
  678. about:
  679.    CALL TR_AUTOREQUEST(app,window,PubScreenName(PubScreen),
  680.          BeginRequester('Über','TRWP_CENTERDISPLAY'),
  681.             'VertGroupA',
  682.                'Space',
  683.                CenteredText3(appname appversion '('||appdate||') (C) 1995 by Nils Görs <N.Goers@Art-Line.Art-Line.de>'),
  684.                'SpaceS',
  685.                CenteredText(appinfo),
  686.                'Space',
  687.                'HorizSeparator',
  688.                'Space',
  689.                CenteredText3('Dieses Programm verwendet das 'Triton GUI creation system''),
  690.                'SpaceS',
  691.                CenteredText("'Triton' ist (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>"),
  692.                'Space',
  693.                'HorizSeparator',
  694.                'Space',
  695.                CenteredText3("Dieses Programm verwendet die 'tritonrexx.library'"),
  696.                'SpaceS',
  697.                'HorizGroupSC',
  698.                   'Space',
  699.                   TextN("'tritonrexx.library' ist (C) by Jürgen Kohrmeyer <j_kohrmeyer@wilam.north.de>") 'TRAT_Flags TRTX_NOUNDERSCORE',
  700.                   'Space',
  701.                'EndGroup',
  702.                'Space',
  703.             'EndGroup',
  704.             'BeginRequesterGads',
  705.             CenteredButtonRE('Danke',10000),
  706.          'EndRequester')
  707.    RETURN
  708.  
  709. /*****************************************************************
  710. *** Routine, die das GUI auf einem neuen PubScreen öffnen läßt ***
  711. ******************************************************************/
  712. _NewPubScreen:
  713. IF PUBSCREENLIST('ScreenList') == 0 THEN RETURN
  714.  
  715. ScreenListTags = WindowID(4),
  716.    WindowPosition('TRWP_MOUSEPOINTER'),
  717.    WindowTitle('PubScreen wechseln'),
  718.    WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
  719.    PubScreenName(Pubscreen),
  720.    'VertGroupA',
  721.       'Space',
  722.       'HorizGroupA',
  723.          'Space',
  724.          ListSel('screenlist',301,0),
  725.          'Space',
  726.       'EndGroup',
  727.       'Space',
  728.       'HorizSeparator',
  729.       'Space',
  730.       'HorizGroupA',
  731.       'Space',
  732.       ButtonRE('Abbrechen',302),
  733.       'Space',
  734.    'EndGroup Space EndGroup EndGroup EndProject'
  735.  
  736.     PubScreenProject = TR_OPENPROJECT(app,Screenlisttags)
  737.  
  738.   IF PubScreenProject ~= '00000000'x THEN DO
  739.     CALL TR_LOCKPROJECT(window)
  740.  
  741.       DO WHILE ende ~= 1
  742.          DO WHILE TR_HANDLEMSG(app,'event2')
  743.             IF event2.trm_class = 'TRMS_ACTION' THEN ende = 1 /* Cancel Gadget */
  744.  
  745.             IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
  746.             nummer = TR_GETATTRIBUTE(PubScreenProject,301,'TRAT_Value')+1
  747.              IF PubScreen ~= Screenlist.nummer THEN DO
  748.               PubScreen = ScreenList.nummer
  749.               ScreenOutPut = 'CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/Closegadget zum Beenden/SCREEN' PubScreen'/AUTO/CLOSE'
  750.               CALL TR_UNLOCKPROJECT(window)
  751.               CALL TR_CLOSEPROJECT(PubScreenProject)
  752.               CALL TR_CLOSEPROJECT(window)
  753.               CALL TR_DELETEAPP(app)
  754.               CALL _maintags
  755.              END
  756.             ELSE ende = 1
  757.             END
  758.          END
  759.       END
  760.  
  761.    ende = 0
  762.     CALL TR_UNLOCKPROJECT(window)
  763.     CALL TR_CLOSEPROJECT(PubScreenProject)
  764. END
  765. RETURN
  766.  
  767. _Iconify:
  768. iwinsize.trd_left=10
  769. iwinsize.trd_top=10
  770. iwinsize.trd_width=20
  771. iwinsize.trd_height=10
  772. iwinsize.trd_left2=10
  773. iwinsize.trd_top2=10
  774. iwinsize.trd_width2=10
  775. iwinsize.trd_height2=20
  776. iwinsize.trd_zoomed=30
  777.  
  778. SleepWin = WindowID(1000),
  779.            PubScreenName(PubScreen),
  780.            WindowTitle(appname appversion),
  781.            WindowDimensions(iwinsize),
  782.            'EndProject'
  783.  
  784.   ok=tr_closeproject(window)
  785.   window = '00000000'x
  786. dummywindow = TR_OPENPROJECT(app,SleepWin)
  787. return
  788.  
  789. _uniconify:
  790.   ok=tr_closeproject(dummywindow)
  791.   dummywindow = '00000000'x
  792.  
  793.   prefs.iwinx=iwinsize.trd_left
  794.   prefs.iwiny=iwinsize.trd_top
  795.   prefs.iwinw=iwinsize.trd_width
  796.   prefs.iwinh=iwinsize.trd_height
  797.   prefs.iwinx2=iwinsize.trd_left2
  798.   prefs.iwiny2=iwinsize.trd_top2
  799.   prefs.iwinw2=iwinsize.trd_width2
  800.   prefs.iwinh2=iwinsize.trd_height2
  801.   prefs.iwinz=iwinsize.trd_zoomed
  802.  
  803.    window = TR_OPENPROJECT(app,windowtags)
  804.    WindowProject=C2D(window) /* zum Locken des Fensters bei About */
  805.  
  806. return
  807.  
  808. /*******************************************************************************
  809. ** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
  810. *******************************************************************************/
  811. break_c:
  812. failure:
  813. halt:
  814. ioerr:
  815. syntax:
  816.    SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
  817.    SAY SOURCELINE(sigl)
  818.  
  819.    IF app ~= '00000000'x THEN
  820.       CALL TR_DELETEAPP(app)
  821.  
  822.    EXIT(10)
  823. /*EOS*/
  824.